/**
 * 将阿拉伯数字转为中文数字
 * 示例：12345 => 一万二千三百四十五
 */

/**
 * 阿拉伯数字转中文数字
 * @param {number} num 阿拉伯数字
 * @returns {string} 中文数字
 */
function numberToChinese(num) {
  const chineseNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
  const chineseUnits = ["", "十", "百", "千", "万"];

  let result = "";
  const numStr = num.toString();

  for (let i = 0; i < numStr.length; i++) {
    const digit = parseInt(numStr.charAt(i)); // 当前数字
    const unit = numStr.length - i - 1; // 单位

    if (digit !== 0) {
      result += chineseNum[digit] + chineseUnits[unit % 4];
      // 出现4位以上加万字
      if (unit >= 4 && unit % 4 === 0) {
        result += chineseUnits[4];
      }
    } else {
      // 出现连续0
      if (result.charAt(result.length - 1) !== chineseNum[0]) {
        result += chineseNum[digit];
      }
      // 出现4位以上加万字
      if (unit >= 4 && unit % 4 === 0) {
        result += chineseUnits[4];
      }
      // 万分位之前为0去掉
      if (result.charAt(result.length - 2) === chineseNum[0]) {
        result = result.substring(0, result.length - 2) + chineseUnits[4];
      }
    }
  }

  /**
   * 特殊情况考虑
   */
  // 1、是0直接返回
  if (num === 0) return chineseNum[0];

  // 2、是10直接返回
  if (num === 10) return chineseUnits[1];

  // 最后一位是0去掉
  if (result.charAt(result.length - 1) === chineseNum[0]) {
    result = result.substring(0, result.length - 1);
  }

  return result;
}

// 测试
const num = 1234560;
const chineseNum = numberToChinese(num);
console.log(chineseNum);
